<?php

namespace Proyecto\MainBundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
use Doctrine\ORM\EntityManager;

class ValorElementoValidator extends ConstraintValidator
{
    private $em;
            
    public function __construct(EntityManager $em){
        $this->em=$em;
    }
    
    public function validate($value, Constraint $constraint)
    {
        $error=false;
        $tipo=$value['tipo'];
        $valor=$value['valor'];
        switch ($tipo){
            case 'label':
                if ((is_null($valor)) || ($valor=='')){
                    $error= true;
                    $mensaje='Ingrese un valor para el label';
                }
                break;
            case 'item':
                $query = $this->em->createQuery(
                       'SELECT i.id
                        FROM ProyectoMainBundle:Item i
                        WHERE i.id = :iditem'
                        )->setParameter('iditem', $valor);
                $item = $query->getResult();
                if (count($item) == 0){
                    $error=true;
                    $mensaje='Elija un ítem válido';
                }
                break;
            case 'separador':
                $query = $this->em->createQuery(
                       'SELECT s.id
                        FROM ProyectoMainBundle:Separador s
                        WHERE s.id = :idseparador'
                        )->setParameter('idseparador', $valor);
                $separador = $query->getResult();
                if (count($separador) == 0){
                    $error=true;
                    $mensaje='Elija un separador válido';
                }
                break;
            
        }
        if ($error){
           $this->context->addViolation($constraint->message, array('%mensaje%' => $mensaje));
        }
    }
}
